Status deste relatório: working in progress
Metadados do artigo aceito para publicação na RSP, de autoria de Rony Coelho, Felipe Guth e Miguel Loureiro
Neste relatório são disponibilizados os códigos e as bases de dados utilizados no artigo
Para verificar os códigos, clique em Code
Os chuncks dos códigos estão comentados com informações antecedidas por #
Uma versão deste relatorio em formato de script (arquivo .Rmd) pode ser encontrada no github dos autores
Os dados brutos podem acessados em suas fontes originais nos respectivos links fornecidos oportunamente
Carregar pacotes
Definir funções
# limpar enviroment
rm(list = ls())
# Desabilitar notação científica
#options(scipen = 999)
# Instalar este pacote para quem não o tem
#install.packages("pacman")
pacman::p_load(tidyverse, readxl, janitor, sjPlot,
scales, DataExplorer, DT, gridExtra,
viridis, ggcorrplot, VGAM, geobr, ggthemes)
# A funcao carrega dois objetos:
# 1 - O dicionário da Munic, contido na primeira aba do excel;
# 2 - Os dados das Munics contidos em todas as demais abas, unidos por "A1"
carregar_munics <- function(link_da_munic, ano){
# definir diretório e arquivo temporário
wd_origin <- getwd()
temp_dir <- tempdir()
setwd(temp_dir)
file.remove(list.files(path = temp_dir))
temp_file <- tempfile(tmpdir = temp_dir)
# Criar lista para armazenar arquivos
Munic_list <- list()
# Download da Munic
download.file(url = link_da_munic, destfile = temp_file)
# unizip
unzip(temp_file)
# remover temporário
file.remove(temp_file)
# selecionar o arquivo xls
file.xls <- list.files(pattern = "xls")
# Nome da Munic
Munic <- paste0("Munic_", ano)
# Carregar todas as abas do excel
Munic <- file.xls %>%
excel_sheets() %>%
set_names() %>%
map(read_excel, path = file.xls)
# remover arquivo xls da pasta temporaria
file.remove(file.xls)
# Nome do dicionario
dic <- paste0("dic_", ano)
# selecionar dicionário
dic <- Munic[[1]]
# excluir dicionário
Munic[[1]] <- NULL
# Mesclar todas as abas do excel
Munic <- Munic %>%
reduce(full_join, by = "A1")
# Criar nome da lista
list <- paste0("list_", Munic)
# criar lista com dicionário e Munic
list <- list(dic, Munic)
# retornar ao diretório orginal
setwd(wd_origin)
# retornar objeto list com dicionário e Munics
return(list)
}
########################################
# Munic 2014
Munic_14_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/2014/base_MUNIC_xls_2014.zip"
Munic_14 <- carregar_munics(link_da_munic = Munic_14_link,
ano = 2014)
Munic_dic_14 <- Munic_14[[1]]
Munic_14 <- Munic_14[[2]]
########################################
# Munic 2013 - Suplementar
Munic_13sup_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/Assistencia_Social_2013/xls/base_assist_social_2013.zip"
Munic_13 <- carregar_munics(link_da_munic = Munic_13sup_link,
ano = 2013)
Munic_dic_13 <- Munic_13[[1]]
Munic_13 <- Munic_13[[2]]
########################################
# Munic 2015
Munic_15_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/2015/Base_de_Dados/Base_MUNIC_2015_xls.zip"
Munic_15 <- carregar_munics(link_da_munic = Munic_15_link,
ano = 2015)
Munic_dic_15 <- Munic_15[[1]]
Munic_15 <- Munic_15[[2]]
########################################
# Pib
pib_link <- "ftp://ftp.ibge.gov.br/Pib_Municipios/2017/base/base_de_dados_2010_2017_xls.zip"
temp_dir <- tempdir()
#
temp_file2 <- tempfile(tmpdir = temp_dir)
# download
download.file(url = pib_link, destfile = temp_file2)
#unzip
unzip(temp_file2)
# selecionar arquivo
file.xls <- list.files(pattern = "xls")
pib <- rio::import(file.xls)
file.remove(file.xls)
## [1] TRUE
########################################
# Carregar dados do idh-m
idhm_link <- "http://atlasbrasil.org.br/2013/data/rawData/atlas2013_dadosbrutos_pt.xlsx"
idhm <- rio::import(idhm_link, sheet = 2)
#idhm <- read_excel("idh_census.xlsx", sheet = 2)
########################################
# base de códigos IBGE
#cod <- read_excel("codigos.xlsx") %>%
# dplyr::select(1:2)
# Uso particular para configurações no computador pessoal
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data.RData")
#load("capacities_raw_data.RData")
###########################################
# Munic 2014 - saúde e educação
index_14 <- c("A263", # Conselho de Saúde
"A271", # Fundo de Saúde
"A273", # Plano de Saúde
"A251", # Secretaria de Saúde
"A256", # Servidores da Saúde
"A207", # Conselho de Educação
"A224", # Conselho do Fundeb, proxy para o fundo
"A203", # Plano de Educação
"A157", # Secretaria de Educação
"A167", # Servidores da Educação
#"A392", # Secretaria Direitos Humanos
#"A545", # Fundo Direitos Humanos
#"A410", # Plano Direitos Humanos
#"A442", # Conselho Direitos Humanos
"A2", # Total de servidores do Municipio
"A12", # Total com ensino Superior
"A13") # Total com pós-graduação
Munic_14_sel <- Munic_14 %>%
dplyr::select(A1,
A1022:A1029, # região, população e porte
index_14)
###########################################
#Munic 2013 - Assistência Social
index_13 <- c("A1",
"A199", # Conselho da Assit. Social
"A230", # Fundo da Assist. Social
"A149", # Plano da Assist. Social
"A2", # Secretaria de Assist. Social
"A39") # Servidores da Assist. Social
Munic_13_sel <- Munic_13 %>%
dplyr::select(index_13)
###########################################
# Munic 2015 - consórcios
index_15 <- c("A1",
"A151", # Consórcio de Educação
"A152", # Intermunicipal
"A153", # Estadual
"A154", # Federal
"A155", # Consórcio de Saúde
"A156", # Intermunicipal
"A157", # Estadual
"A158", # Federal
"A159", # Consórcio de Assist. Social
"A160", # Intermunicipal
"A161", # Estadual
"A162") # Federal
Munic_15_sel <- Munic_15 %>%
dplyr::select(index_15)
###########################################
# PIB - 2014
pib <- clean_names(pib)
pib_sel <- pib %>% #glimpse()
filter(ano == 2014) %>%
select(A1 = codigo_do_municipio, ano,
pib_total = produto_interno_bruto_a_precos_correntes_r_1_000,
pib_per_cap = produto_interno_bruto_per_capita_a_precos_correntes_r_1_00)%>%
arrange(desc(pib_per_cap))
###########################################
# IDH-M - 2010
idhm_sel <- idhm %>%
dplyr::select(A1 = Codmun7, ANO, IDHM) %>%
filter(ANO==2010) %>%
arrange(desc(IDHM))
# garantir que os códigos possuem a mesma classficação
Munic_13_sel$A1 <- as.character(Munic_13_sel$A1)
Munic_15_sel$A1 <- as.character(Munic_15_sel$A1)
Munic_14_sel$A1 <- as.character(Munic_14_sel$A1)
pib_sel$A1 <- as.character(pib_sel$A1)
idhm_sel$A1 <- as.character(idhm_sel$A1)
# Criar variavel com código de 6 digitos para mesclar com a Munic 2013 e mesclar todas as Munics
capacities <- Munic_14_sel %>%
mutate(A1a = str_sub(A1,start = 1, end = 6)) %>%
select(A1, A1a, everything()) %>%
full_join(Munic_13_sel, by = c("A1a"="A1")) %>%
full_join(Munic_15_sel, by = c("A1"="A1"))
# Mesclar pib e idhm
capacities <- capacities %>%
full_join(pib_sel) %>%
full_join(idhm_sel)
capacities %>% head(10)
capacities <- capacities %>%
select(cod_mun = A1,
nm_mun = A1027,
populacao = A1028,
faixa_pop = A1029,
cod_est = A1022,
nm_est = A1025,
sg_est = A1026,
regiao = A1024,
# Secretarias
sc_sa = A251,
sc_as = A2.y,
sc_ed = A157.x,
# Planos
pl_sa = A273,
pl_as = A149,
pl_ed = A203,
# Fundos
fu_sa = A271,
fu_as = A230,
fu_ed = A224,
# Conselhos
chl_sa = A263,
chl_as = A199,
chl_ed = A207,
# Servidores
ser_sa = A256,
ser_as = A39,
ser_ed = A167,
# Consórciso
consor_ed = A151,
#consor_ed_mun = A152 ,
#consor_ed_est = A153,
#consor_ed_un = A154,
consor_sa = A155,
#consor_sa_mun = A156,
#consor_sa_est = A157.y,
#consor_sa_un = A158,
consor_as = A159,
#consor_as_mun = A160,
#consor_as_est = A161,
#consor_as_un = A162,
pib_total = pib_total,
pib_per_cap = pib_per_cap,
ano_pib = ano,
idhm = IDHM,
ano_idhm = ANO)
# Verificar existência de NAs
DataExplorer::plot_missing(capacities)
# NA - presentes apenas nos IDHM
# Excluir NA's
# Removidos 5 municipios não criados até 2010, portante sem o IDHM para esse ano.
capacities <- capacities %>%
drop_na(idhm)
DataExplorer::plot_missing(capacities)
Criada apenas para preservar os dados brutos em caso de reutilização
capacities_1 <- capacities
Podem ser baixados em formato excel ou csv
Legenda:
capacities_1 %>%
datatable(extensions = 'Buttons',
rownames = F,
options = list(dom = 'Blfrtip',
buttons = c('csv', 'excel'),
autoFill = TRUE,
fixedHeader = TRUE,
autowidth = TRUE,
paging = F,
scrollX = TRUE,
scrollY = "400px"))
# Uso particular para configurações de uso pessoal
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_2.RData")
#load("capacities_raw_data_2.RData")
De 5.565 mun. passamos a trabalhar com 4.917 (88%)
capacities_2 <- capacities_1 %>%
filter(populacao <= 50000) %>%
mutate(faixa_pop = faixa_pop %>% as.factor())
Visualizar:
Categorias
Quantidades em cada categoria
Estatisticas descritivas básicas
unique(capacities_2$faixa_pop)
## [1] 4 - 20001 até 50000 2 - 5001 até 10000 3 - 10001 até 20000
## [4] 1 - Até 5000
## 4 Levels: 1 - Até 5000 2 - 5001 até 10000 ... 4 - 20001 até 50000
summary(capacities_2$faixa_pop)
## 1 - Até 5000 2 - 5001 até 10000 3 - 10001 até 20000 4 - 20001 até 50000
## 1242 1214 1381 1080
summary(capacities_2$populacao)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 822 4967 10008 13312 18595 49963
character_col <- c("cod_mun", "nm_mun")
factor_col <- c("cod_est", "nm_est", "sg_est","faixa_pop", "regiao", "sc_sa", "sc_as", "sc_ed", "pl_sa", "pl_as", "pl_ed", "fu_sa", "fu_as", "fu_ed", "chl_sa", "chl_as", "chl_ed", "consor_ed", "consor_ed", "consor_sa", "consor_as")
numeric_col <- c("populacao", "ser_sa", "ser_as", "ser_ed", "pib_total", "pib_per_cap", "ano_pib", "idhm","ano_idhm")
capacities_2 <- capacities_2 %>%
mutate_at(character_col, as.character) %>%
mutate_at(factor_col, as.factor) %>%
mutate_at(numeric_col, as.numeric)
Numéricas: são apresentados valores mínimos, máximos, média, mediana etc.
Categóricas: categorias e quantidade de cada uma
Character: quantidade de valores únicos
summary(capacities_2)
## cod_mun nm_mun populacao
## Length:4917 Length:4917 Min. : 822
## Class :character Class :character 1st Qu.: 4967
## Mode :character Mode :character Median :10008
## Mean :13312
## 3rd Qu.:18595
## Max. :49963
##
## faixa_pop cod_est nm_est
## 1 - Até 5000 :1242 31 : 785 Minas Gerais : 785
## 2 - 5001 até 10000 :1214 35 : 512 São Paulo : 512
## 3 - 10001 até 20000:1381 43 : 453 Rio Grande do Sul: 453
## 4 - 20001 até 50000:1080 29 : 370 Bahia : 370
## 41 : 364 Paraná : 364
## 42 : 265 Santa Catarina : 265
## (Other):2168 (Other) :2168
## sg_est regiao
## MG : 785 1 - Norte : 379
## SP : 512 2 - Nordeste :1611
## RS : 453 3 - Sudeste :1419
## BA : 370 4 - Sul :1082
## PR : 364 5 - Centro-Oeste: 426
## SC : 265
## (Other):2168
## sc_sa
## Não informado : 2
## Órgão da administração indireta : 4
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas: 366
## Secretaria municipal exclusiva :4417
## Setor subordinado a outra secretaria : 10
## Setor subordinado diretamente à chefia do Executivo : 117
## sc_as
## Fundação pública : 3
## Não possui estrutura : 2
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas: 963
## Secretaria municipal exclusiva :3727
## Setor subordinado a outra secretaria : 82
## Setor subordinado diretamente à chefia do Executivo : 139
## sc_ed
## Não informado : 1
## Órgão da administração indireta : 2
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas:1983
## Secretaria municipal exclusiva :2751
## Setor subordinado à outra secretaria : 9
## Setor subordinado diretamente à chefia do Executivo : 170
## pl_sa pl_as pl_ed fu_sa
## Não : 122 Não : 286 Não :2852 Não : 4
## Não informado: 3 Recusa: 1 Não informado: 3 Não informado: 3
## Recusa : 1 Sim :4630 Recusa : 1 Recusa : 1
## Sim :4791 Sim :2061 Sim :4909
##
##
##
## fu_as fu_ed chl_sa chl_as
## Não : 31 Não : 72 Não : 10 Não : 5
## Recusa: 1 Não informado: 3 Não informado: 2 Recusa: 1
## Sim :4885 Recusa : 1 Recusa : 1 Sim :4911
## Sim :4841 Sim :4904
##
##
##
## chl_ed ser_sa ser_as ser_ed
## Não : 666 Min. : 1.0 Min. : 0.000 Min. : 0.0
## Não informado: 3 1st Qu.: 61.0 1st Qu.: 2.000 1st Qu.: 94.0
## Recusa : 1 Median : 100.0 Median : 5.000 Median : 179.0
## Sim :4247 Mean : 135.7 Mean : 8.559 Mean : 267.4
## 3rd Qu.: 179.0 3rd Qu.: 11.000 3rd Qu.: 364.0
## Max. :1253.0 Max. :180.000 Max. :2460.0
## NA's :50 NA's :11 NA's :29
## consor_ed consor_sa consor_as
## Não :4594 Não :2396 Não :4513
## Não informado: 1 Não informado: 1 Não informado: 1
## Recusa : 1 Recusa : 1 Recusa : 1
## Sim : 321 Sim :2519 Sim : 402
##
##
##
## pib_total pib_per_cap ano_pib idhm
## Min. : 11715 Min. : 3082 Min. :2014 Min. :0.4180
## 1st Qu.: 58829 1st Qu.: 7491 1st Qu.:2014 1st Qu.:0.5940
## Median : 119973 Median : 12951 Median :2014 Median :0.6570
## Mean : 238100 Mean : 17625 Mean :2014 Mean :0.6521
## 3rd Qu.: 251339 3rd Qu.: 21434 3rd Qu.:2014 3rd Qu.:0.7100
## Max. :11915834 Max. :815698 Max. :2014 Max. :0.8540
##
## ano_idhm
## Min. :2010
## 1st Qu.:2010
## Median :2010
## Mean :2010
## 3rd Qu.:2010
## Max. :2010
##
1 mun. (cod_mun: 2102150) recusou-se a responder todas as questões
1 mun. (cod_mun: 2102150) recusou-se a responder questões sobre consórcios
Outros casos serão excluídos oportunamente
# capacities_2[which(capacities_2$sc_as == "Recusa"), ]
# capacities_2[which(capacities_2$sc_ed == "Recusa"), ]
# capacities_2[which(capacities_2$consor_ed == "Recusa"), ]
# # A tibble: 1 x 31
# cod_mun nm_mun populacao faixa_pop cod_est nm_est sg_est regiao sc_sa sc_as sc_ed pl_sa pl_as pl_ed
# <chr> <chr> <dbl> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
# 1 2102150 Brejo~ 4291 1 - Até ~ 21 Maran~ MA 2 - N~ Recu~ Recu~ Recu~ Recu~ Recu~ Recu~
# Filtrar 1 municipio com recusa para todas as variáveis
capacities_2 <- filter(capacities_2, cod_mun != 2102150)
capacities_2 <- filter(capacities_2, cod_mun != 4110508)
# 4.915 casos
Operação em dois passos
# verificar labels
unique(capacities_2$sc_sa)
## [1] Secretaria municipal exclusiva
## [2] Setor subordinado diretamente à chefia do Executivo
## [3] Secretaria municipal em conjunto com outras políticas
## [4] Setor subordinado a outra secretaria
## [5] Não informado
## [6] Órgão da administração indireta
## 7 Levels: Não informado Órgão da administração indireta ... Setor subordinado diretamente à chefia do Executivo
unique(capacities_2$sc_ed)
## [1] Secretaria municipal exclusiva
## [2] Secretaria municipal em conjunto com outras políticas
## [3] Setor subordinado diretamente à chefia do Executivo
## [4] Órgão da administração indireta
## [5] Setor subordinado à outra secretaria
## [6] Não informado
## 7 Levels: Não informado Órgão da administração indireta ... Setor subordinado diretamente à chefia do Executivo
unique(capacities_2$sc_as)
## [1] Secretaria municipal em conjunto com outras políticas
## [2] Secretaria municipal exclusiva
## [3] Setor subordinado diretamente à chefia do Executivo
## [4] Setor subordinado a outra secretaria
## [5] Fundação pública
## [6] Não possui estrutura
## 7 Levels: Fundação pública Não possui estrutura ... Setor subordinado diretamente à chefia do Executivo
Transformar Secretaria municipal exclusiva = Sim
Outras modalidades = Não
# Transformar Secretaria exclusiva = Sim.
capacities_2 <- capacities_2 %>%
mutate_at(vars(sc_sa:sc_ed),
funs(ifelse(.=="Secretaria municipal exclusiva", "Sim","Não")))
quantidades e porcentagens por setor
capacities_2 %>%
count(sc_sa, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 %>%
count(sc_as, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 %>%
count(sc_ed, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
Transformar todas as respostas “Sim” = 1;
Todas demais opções (“Não”, “Não informado”, etc) = 0
Depois, realizar a contagem de “Sim” e classificar
Visualizar classificação da contagem, quantidade e porcentagem em cada categoria (apenas para saúde. O mesmo procedimento foi aplicado às demais áreas)
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(sc_sa:sc_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_sc = rowSums(select(.,sc_sa:sc_ed))) %>%
relocate(Num_sc, .after = sc_ed)
# Categorizar quantidade de secretarias
capacities_2 <- capacities_2 %>%
mutate(Sc_class = case_when(
Num_sc == 3 ~ "Possui 3",
Num_sc == 2 ~ "Possui 2",
Num_sc == 1 ~ "Possui 1",
Num_sc == 0 ~ "Não possui")) %>%
relocate(Sc_class, .after = Num_sc)
levels_cat <- c("Não possui" ,"Possui 1", "Possui 2","Possui 3")
capacities_2$Sc_class <- ordered(capacities_2$Sc_class,
levels = c(levels_cat))
# Verificar
capacities_2 %>%
count(Sc_class, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
# # Verificar lables
# unique(capacities_1$pl_as)
# unique(capacities_1$pl_sa)
# unique(capacities_1$pl_ed)
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(pl_sa:pl_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_pl = rowSums(select(.,pl_sa:pl_ed)))%>%
relocate(Num_pl, .after = pl_ed)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Pl_class = case_when(
Num_pl == 3 ~ "Possui 3",
Num_pl == 2 ~ "Possui 2",
Num_pl == 1 ~ "Possui 1",
Num_pl == 0 ~ "Não possui")) %>%
relocate(Pl_class, .after = Num_pl)
capacities_2$Pl_class <- ordered(capacities_2$Pl_class,
levels = c(levels_cat))
capacities_2 %>%
count(Pl_class, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
# # Verificar lables
# unique(capacities_1$fu_as)
# unique(capacities_1$fu_sa)
# unique(capacities_1$fu_ed)
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(fu_sa:fu_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_fu = rowSums(select(.,fu_sa:fu_ed)))%>%
relocate(Num_fu, .after = fu_ed)
# Categorizar quantidade de fundos
capacities_2 <- capacities_2 %>%
mutate(Fu_class = case_when(
Num_fu == 3 ~ "Possui 3",
Num_fu == 2 ~ "Possui 2",
Num_fu == 1 ~ "Possui 1",
Num_fu == 0 ~ "Não possui")) %>%
relocate(Fu_class, .after = Num_fu)
capacities_2$Fu_class <- ordered(capacities_2$Fu_class,
levels = c(levels_cat))
capacities_2 %>%
count(Fu_class, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
# # Verificar lables
# unique(capacities_1$chl_as)
# unique(capacities_1$chl_sa)
# unique(capacities_1$chl_ed)
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(chl_sa:chl_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_chl = rowSums(select(.,chl_sa:chl_ed)))%>%
relocate(Num_chl, .after = chl_ed)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Chl_class = case_when(
Num_chl == 3 ~ "Possui 3",
Num_chl == 2 ~ "Possui 2",
Num_chl == 1 ~ "Possui 1",
Num_chl == 0 ~ "Não possui")) %>%
relocate(Chl_class, .after = Num_chl)
capacities_2$Chl_class <- ordered(capacities_2$Chl_class,
levels = c(levels_cat))
capacities_2 %>%
count(Chl_class, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
# # Assistência Social
# levels(capacities_2$consor_as)
# levels(capacities_2$consor_ed)
# levels(capacities_2$consor_sa)
capacities_2 <- capacities_2 %>%
mutate_at(vars(consor_ed:consor_as),
funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_consor = rowSums(select(.,consor_ed:consor_as)))%>%
relocate(Num_consor, .after = consor_as)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Consor_class = case_when(
Num_consor == 3 ~ "Possui 3",
Num_consor == 2 ~ "Possui 2",
Num_consor == 1 ~ "Possui 1",
Num_consor == 0 ~ "Não possui")) %>%
relocate(Consor_class, .after = Num_consor)
capacities_2$Consor_class <- ordered(capacities_2$Consor_class,
levels = c(levels_cat))
capacities_2 %>%
count(Consor_class, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 <- capacities_2 %>%
mutate(ser_sa_pop = ser_sa*10000/populacao,
ser_ed_pop = ser_ed*10000/populacao,
ser_as_pop = ser_as*10000/populacao,
total_ser_por_10mil_hab = ser_sa_pop + ser_ed_pop + ser_as_pop,
total_ser_por_10mil_hab = round(total_ser_por_10mil_hab)) %>%
relocate(ser_sa:ser_ed, .after = Consor_class ) %>%
relocate(ser_sa_pop:total_ser_por_10mil_hab, .after = ser_ed)
summary(capacities_2$total_ser_por_10mil_hab)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 29.0 248.0 321.0 339.8 411.0 1323.0 71
#Verificar quantiles
quantile(capacities_2$idhm, c(.2,.4,.6,.8,1))
## 20% 40% 60% 80% 100%
## 0.584 0.629 0.681 0.719 0.854
min(capacities_2$idhm)
## [1] 0.418
max(capacities_2$idhm)
## [1] 0.854
# 20% 40% 60% 80% 100%
# 0.584 0.629 0.681 0.719 0.854
capacities_2 <- capacities_2 %>%
mutate(idhm_quintil = case_when(
idhm <= 0.584 ~ "primeiro",
idhm >= 0.585 & idhm <= 0.629 ~ "segundo",
idhm >= 0.630 & idhm <= 0.681 ~ "terceiro",
idhm >= 0.682 & idhm <= 0.719 ~ "quarto",
idhm >= 0.720 ~ "quinto"))
levels_idhm = c("primeiro", "segundo", "terceiro", "quarto", "quinto")
capacities_2$idhm_quintil <- ordered(capacities_2$idhm_quintil,
levels = c(levels_idhm))
Do artigo:
“Para operacionalizar essa variável, devido à necessidade de ajuste ao modelo logístico empregado (Yee, 2010), ao invés de trabalharmos com as gradações oficiais, trabalhamos com os quintis da distribuição observada , ordenados de forma crescente” (p. 10)
“Pela classificação do Atlas Brasil, dentre os 4.916 municípios analisados, apenas 30 se enquadram na classificação “muito baixo” e 5, na “muito alto”. Isso gera alta concentração nas categorias intermediárias (“baixo” = 1.316; “médio”= 2.054 e “alto” = 1.511). Ao adotar a classificação por quintis, aproximadamente 25% dos valores ficam classificadas em cada uma das categoriais, o que representa uma distribuição mais homogênea entre as categorias e permite a melhor aplicação do modelo logístico de regressão." (p. 10, nota 4)
capacities_2 %>%
count(idhm_quintil, name = "qtdd_de_mun") %>%
mutate(perc = qtdd_de_mun/sum(qtdd_de_mun)*100)
Criada para preservar os dados brutos em caso de reutilização
capacities_3 <- capacities_2
capacities_3 %>%
datatable(extensions = 'Buttons',
rownames = F,
options = list(dom = 'Blfrtip',
buttons = c('csv', 'excel'),
autoFill = TRUE,
fixedHeader = TRUE,
autowidth = TRUE,
paging = F,
scrollX = TRUE,
scrollY = "400px"))
# Verificar existência de NAs
DataExplorer::plot_missing(capacities_3)
# NA - presentes apenas na quantidade de servidores
# 1,46% dos casos está com NA. Excluindo esses, o número de municípios decai para 4.844 (86% do total)
capacities_3 <- capacities_3 %>%
drop_na(total_ser_por_10mil_hab)
DataExplorer::plot_missing(capacities_3)
# Uso particular para configurações
# setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_3.RData")
#load("capacities_raw_data_3.RData")
capacities_4 <- capacities_3
vglm, do pacote ‘VGAM’, e os argumentos family = cumulative(parallel = T, reverse = T)No artigo foram reportadas apenas a coluna Estimate e o p-value
olr_brasil <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = capacities_4, family = cumulative(parallel = T, reverse = T))
summary(olr_brasil)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = capacities_4)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -44.96 0.03144 0.09835 0.27810 3.751
## logitlink(P[Y>=3]) -28.26 -0.30005 0.10343 0.29819 35.771
## logitlink(P[Y>=4]) -262.13 -0.26640 -0.10316 0.37688 6.405
## logitlink(P[Y>=5]) -33.97 -0.32335 -0.08986 -0.03877 9.709
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -2.704e+01 8.095e-01 -33.400 < 2e-16 ***
## (Intercept):2 -2.876e+01 8.205e-01 -35.049 < 2e-16 ***
## (Intercept):3 -3.041e+01 8.341e-01 -36.463 < 2e-16 ***
## (Intercept):4 -3.209e+01 8.467e-01 -37.907 < 2e-16 ***
## log(pib_per_cap) 2.974e+00 6.172e-02 48.191 < 2e-16 ***
## Num_sc -2.092e-01 3.440e-02 -6.081 1.19e-09 ***
## Num_pl 2.832e-01 4.953e-02 5.717 1.09e-08 ***
## Num_fu 2.458e-01 1.793e-01 1.371 0.17
## Num_chl 5.062e-01 8.061e-02 6.280 3.39e-10 ***
## total_ser_por_10mil_hab -3.405e-03 2.197e-04 -15.499 < 2e-16 ***
## Num_consor 1.959e-01 3.711e-02 5.279 1.30e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 11511.06 on 19365 degrees of freedom
##
## Log-likelihood: -5755.53 on 19365 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 19.5761472 0.8112396 1.3273146
## Num_fu Num_chl total_ser_por_10mil_hab
## 1.2786780 1.6589690 0.9966012
## Num_consor
## 1.2164123
norte <- capacities_4 %>%
filter(regiao == "1 - Norte")
olr_norte <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = norte, family = cumulative(parallel = T, reverse = T))
summary(olr_norte)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = norte)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.961 -0.6551 0.23297 0.63426 2.579
## logitlink(P[Y>=3]) -10.095 -0.6047 -0.20622 0.65998 2.880
## logitlink(P[Y>=4]) -2.993 -0.2538 -0.11247 -0.06369 9.108
## logitlink(P[Y>=5]) -0.935 -0.0651 -0.04221 -0.02455 6.024
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -2.514e+01 2.745e+00 -9.156 < 2e-16 ***
## (Intercept):2 -2.689e+01 2.787e+00 -9.646 < 2e-16 ***
## (Intercept):3 -2.971e+01 2.878e+00 -10.324 < 2e-16 ***
## (Intercept):4 -3.176e+01 2.990e+00 -10.622 < 2e-16 ***
## log(pib_per_cap) 2.834e+00 2.695e-01 10.517 < 2e-16 ***
## Num_sc -1.626e-01 1.496e-01 -1.087 0.27711
## Num_pl 1.515e-01 1.867e-01 0.812 0.41699
## Num_fu 8.331e-03 4.379e-01 0.019 0.98482
## Num_chl 1.924e-01 2.239e-01 0.859 0.39027
## total_ser_por_10mil_hab -1.937e-03 7.325e-04 -2.644 0.00818 **
## Num_consor -1.749e-01 1.564e-01 -1.118 0.26346
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 780.7116 on 1461 degrees of freedom
##
## Log-likelihood: -390.3558 on 1461 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## No Hauck-Donner effect found in any of the estimates
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 17.0114864 0.8499459 1.1636012
## Num_fu Num_chl total_ser_por_10mil_hab
## 1.0083654 1.2121167 0.9980649
## Num_consor
## 0.8395527
nordeste <- capacities_4 %>%
filter(regiao == "2 - Nordeste")
olr_nordeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = nordeste, family = cumulative(parallel = T, reverse = T))
summary(olr_nordeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = nordeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.8483 -0.86411 -0.18002 0.96766 2.173
## logitlink(P[Y>=3]) -2.9322 -0.36921 -0.19560 -0.14750 9.575
## logitlink(P[Y>=4]) -0.4855 -0.05911 -0.04669 -0.03788 14.595
## logitlink(P[Y>=5]) -1.2406 -0.01845 -0.01480 -0.01201 10.005
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.557e+01 1.560e+00 -9.980 < 2e-16 ***
## (Intercept):2 -1.815e+01 1.583e+00 -11.465 < 2e-16 ***
## (Intercept):3 -2.116e+01 1.640e+00 -12.901 < 2e-16 ***
## (Intercept):4 -2.338e+01 1.871e+00 -12.495 < 2e-16 ***
## log(pib_per_cap) 1.708e+00 1.304e-01 13.092 < 2e-16 ***
## Num_sc -1.266e-01 7.277e-02 -1.740 0.081826 .
## Num_pl 3.479e-01 9.273e-02 3.751 0.000176 ***
## Num_fu -3.931e-01 3.164e-01 -1.242 0.214074
## Num_chl 5.383e-01 1.590e-01 3.385 0.000713 ***
## total_ser_por_10mil_hab -1.290e-03 3.989e-04 -3.233 0.001223 **
## Num_consor 9.467e-02 6.551e-02 1.445 0.148415
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 2776.816 on 6285 degrees of freedom
##
## Log-likelihood: -1388.408 on 6285 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):4'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 5.5160519 0.8810550 1.4160229
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.6749444 1.7130142 0.9987109
## Num_consor
## 1.0992983
centro_oeste <- capacities_4 %>%
filter(regiao == "5 - Centro-Oeste")
olr_centro_oeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = nordeste, family = cumulative(parallel = T, reverse = T))
summary(olr_centro_oeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = nordeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.8483 -0.86411 -0.18002 0.96766 2.173
## logitlink(P[Y>=3]) -2.9322 -0.36921 -0.19560 -0.14750 9.575
## logitlink(P[Y>=4]) -0.4855 -0.05911 -0.04669 -0.03788 14.595
## logitlink(P[Y>=5]) -1.2406 -0.01845 -0.01480 -0.01201 10.005
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.557e+01 1.560e+00 -9.980 < 2e-16 ***
## (Intercept):2 -1.815e+01 1.583e+00 -11.465 < 2e-16 ***
## (Intercept):3 -2.116e+01 1.640e+00 -12.901 < 2e-16 ***
## (Intercept):4 -2.338e+01 1.871e+00 -12.495 < 2e-16 ***
## log(pib_per_cap) 1.708e+00 1.304e-01 13.092 < 2e-16 ***
## Num_sc -1.266e-01 7.277e-02 -1.740 0.081826 .
## Num_pl 3.479e-01 9.273e-02 3.751 0.000176 ***
## Num_fu -3.931e-01 3.164e-01 -1.242 0.214074
## Num_chl 5.383e-01 1.590e-01 3.385 0.000713 ***
## total_ser_por_10mil_hab -1.290e-03 3.989e-04 -3.233 0.001223 **
## Num_consor 9.467e-02 6.551e-02 1.445 0.148415
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 2776.816 on 6285 degrees of freedom
##
## Log-likelihood: -1388.408 on 6285 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):4'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 5.5160519 0.8810550 1.4160229
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.6749444 1.7130142 0.9987109
## Num_consor
## 1.0992983
sudeste <- capacities_4 %>%
filter(regiao == "3 - Sudeste")
olr_sudeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = sudeste, family = cumulative(parallel = T, reverse = T))
summary(olr_sudeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = sudeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.515 0.04022 0.06855 0.1308 1.696
## logitlink(P[Y>=3]) -15.354 0.07184 0.13510 0.4036 11.774
## logitlink(P[Y>=4]) -133.081 -0.56684 0.19885 0.5737 4.277
## logitlink(P[Y>=5]) -17.497 -0.61263 -0.17243 0.5507 5.880
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -2.267e+01 1.755e+00 -12.919 < 2e-16 ***
## (Intercept):2 -2.460e+01 1.761e+00 -13.970 < 2e-16 ***
## (Intercept):3 -2.675e+01 1.783e+00 -15.003 < 2e-16 ***
## (Intercept):4 -2.843e+01 1.801e+00 -15.785 < 2e-16 ***
## log(pib_per_cap) 2.499e+00 1.253e-01 19.939 < 2e-16 ***
## Num_sc -1.430e-01 6.515e-02 -2.195 0.0282 *
## Num_pl -1.843e-02 9.188e-02 -0.201 0.8410
## Num_fu 7.453e-01 4.334e-01 1.720 0.0855 .
## Num_chl 9.300e-01 1.725e-01 5.391 7.01e-08 ***
## total_ser_por_10mil_hab -2.848e-03 4.087e-04 -6.970 3.18e-12 ***
## Num_consor -6.012e-01 8.853e-02 -6.791 1.11e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 3241.068 on 5617 degrees of freedom
##
## Log-likelihood: -1620.534 on 5617 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 12.1692336 0.8667684 0.9817370
## Num_fu Num_chl total_ser_por_10mil_hab
## 2.1070697 2.5344048 0.9971559
## Num_consor
## 0.5481392
sul <- capacities_4 %>%
filter(regiao == "4 - Sul")
olr_sul <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = sul, family = cumulative(parallel = T, reverse = T))
summary(olr_sul)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = sul)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.781 0.01925 0.0280 0.04021 0.5752
## logitlink(P[Y>=3]) -12.105 0.07094 0.1081 0.17196 0.6690
## logitlink(P[Y>=4]) -8.852 0.11025 0.2481 0.61997 1.6437
## logitlink(P[Y>=5]) -5.944 -0.77174 -0.2736 0.80642 3.5892
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.707e+01 2.420e+00 -7.052 1.77e-12 ***
## (Intercept):2 -1.995e+01 2.322e+00 -8.593 < 2e-16 ***
## (Intercept):3 -2.236e+01 2.328e+00 -9.602 < 2e-16 ***
## (Intercept):4 -2.420e+01 2.346e+00 -10.315 < 2e-16 ***
## log(pib_per_cap) 2.429e+00 1.801e-01 13.487 < 2e-16 ***
## Num_sc -3.082e-01 6.535e-02 -4.715 2.41e-06 ***
## Num_pl 9.667e-02 1.106e-01 0.874 0.38230
## Num_fu -1.712e-01 4.779e-01 -0.358 0.72018
## Num_chl 1.966e-01 2.023e-01 0.971 0.33132
## total_ser_por_10mil_hab -1.958e-03 5.991e-04 -3.268 0.00108 **
## Num_consor 1.426e-01 8.569e-02 1.664 0.09609 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 2243.33 on 4297 degrees of freedom
##
## Log-likelihood: -1121.665 on 4297 degrees of freedom
##
## Number of Fisher scoring iterations: 5
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 11.3516592 0.7348012 1.1014948
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.8426569 1.2172126 0.9980441
## Num_consor
## 1.1532651
shape_mun <- geobr::read_municipality(simplified = T, showProgress = F)
shape_estado <- geobr::read_state(simplified = T, showProgress = F)
# Uso particular para configurações
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_4.RData")
#load("capacities_raw_data_4.RData")
# rm(list = setdiff(ls(), "map"))
#save.image("capacities_raw_data_shapes.RData")
#load("capacities_raw_data_shapes.RData")
map <- shape_mun %>%
select(cod_mun = code_muni, geom) %>%
mutate(cod_mun = as.character(cod_mun)) %>%
left_join(capacities_4)
#save(map, "map.RData")
theme_map_manual <- function(){
theme(legend.position = c(0.35, 0.5),
legend.justification = c("right", "top"),
legend.background = element_blank(),
plot.title=element_text( hjust=0, vjust=-5, face='bold', size = 12))
}
levels_map <- levels(map$Sc_class)
# inverter ordem e incluir NA
levels_map <- c(levels_map[c(4:1)], NA)
# Definir cores
colors_map <- c(scales::viridis_pal(option = "D")(4), "gray40")
# Definir cor para cada level
names(colors_map) <- levels_map
# Definir rótulos
labels_map <- levels_map
labels_map[5] <- "Não analisados\nAcima de 50.000hab."
map_sc <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Sc_class)),
color = NA)+
scale_fill_manual(name = "Secretarias",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Secretarias exclusivas")
map_pl <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Pl_class)), color = NA)+
scale_fill_manual(name = "Planos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Planos")
map_fu <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Fu_class)), color = NA)+
scale_fill_manual(name = "Fundos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Fundos")
map_chl <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Chl_class)),
color = NA)+
scale_fill_manual(name = "Conselhos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Conselhos")
mapas <- gridExtra::grid.arrange(map_sc, map_pl, map_fu, map_chl, ncol = 2)
mapas
## TableGrob (2 x 2) "arrange": 4 grobs
## z cells name grob
## 1 1 (1-1,1-1) arrange gtable[layout]
## 2 2 (1-1,2-2) arrange gtable[layout]
## 3 3 (2-2,1-1) arrange gtable[layout]
## 4 4 (2-2,2-2) arrange gtable[layout]
Não reportadas no artigo
cap_cor <- capacities_4 %>%
select(pib_per_cap, idhm, starts_with("Num"), total_ser_por_10mil_hab, populacao)
corr <- round(cor(cap_cor), 2)
ggcorrplot(corr, hc.order = F,
type = "lower",
show.diag = T,
pch = 12,
pch.cex = 12,
tl.cex = 12,
lab = TRUE,
lab_size = 3,
method="circle",
colors = c("tomato2", "white", "springgreen3"),
title="Correlação entre variáveis numéricas",
ggtheme=theme_bw)
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$regiao,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "IDHM por região")
| idhm_quintil | regiao | Total | ||||
|---|---|---|---|---|---|---|
| 1 - Norte | 2 - Nordeste | 3 - Sudeste | 4 - Sul | 5 - Centro-Oeste | ||
| primeiro |
128 13.3 % 34.8 % |
787 81.7 % 50 % |
43 4.5 % 3.1 % |
2 0.2 % 0.2 % |
3 0.3 % 0.7 % |
963 100 % 19.9 % |
| segundo |
113 11.8 % 30.7 % |
645 67.2 % 41 % |
149 15.5 % 10.6 % |
31 3.2 % 2.9 % |
22 2.3 % 5.3 % |
960 100 % 19.8 % |
| terceiro |
108 11.1 % 29.3 % |
133 13.7 % 8.4 % |
385 39.5 % 27.4 % |
210 21.6 % 19.5 % |
138 14.2 % 33 % |
974 100 % 20.1 % |
| quarto |
16 1.6 % 4.3 % |
8 0.8 % 0.5 % |
385 39.3 % 27.4 % |
376 38.4 % 34.9 % |
194 19.8 % 46.4 % |
979 100 % 20.2 % |
| quinto |
3 0.3 % 0.8 % |
1 0.1 % 0.1 % |
445 46 % 31.6 % |
458 47.3 % 42.5 % |
61 6.3 % 14.6 % |
968 100 % 20 % |
| Total |
368 7.6 % 100 % |
1574 32.5 % 100 % |
1407 29 % 100 % |
1077 22.2 % 100 % |
418 8.6 % 100 % |
4844 100 % 100 % |
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$faixa_pop,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "IDHM por tamanho população")
| idhm_quintil | faixa_pop | Total | |||
|---|---|---|---|---|---|
| 1 - Até 5000 | 2 - 5001 até 10000 | 3 - 10001 até 20000 | 4 - 20001 até 50000 | ||
| primeiro |
141 14.6 % 11.5 % |
248 25.8 % 20.7 % |
353 36.7 % 26 % |
221 22.9 % 20.9 % |
963 100 % 19.9 % |
| segundo |
168 17.5 % 13.7 % |
232 24.2 % 19.3 % |
330 34.4 % 24.3 % |
230 24 % 21.8 % |
960 100 % 19.8 % |
| terceiro |
318 32.6 % 25.9 % |
277 28.4 % 23.1 % |
212 21.8 % 15.6 % |
167 17.1 % 15.8 % |
974 100 % 20.1 % |
| quarto |
310 31.7 % 25.2 % |
249 25.4 % 20.8 % |
255 26 % 18.8 % |
165 16.9 % 15.6 % |
979 100 % 20.2 % |
| quinto |
293 30.3 % 23.8 % |
193 19.9 % 16.1 % |
208 21.5 % 15.3 % |
274 28.3 % 25.9 % |
968 100 % 20 % |
| Total |
1230 25.4 % 100 % |
1199 24.8 % 100 % |
1358 28 % 100 % |
1057 21.8 % 100 % |
4844 100 % 100 % |
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$Sc_class,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T)
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
8 0.8 % 3.6 % |
75 7.8 % 12.8 % |
363 37.7 % 18.5 % |
517 53.7 % 25 % |
963 100 % 19.9 % |
| segundo |
14 1.5 % 6.3 % |
109 11.4 % 18.6 % |
381 39.7 % 19.4 % |
456 47.5 % 22.1 % |
960 100 % 19.8 % |
| terceiro |
31 3.2 % 14 % |
106 10.9 % 18.1 % |
426 43.7 % 21.7 % |
411 42.2 % 19.9 % |
974 100 % 20.1 % |
| quarto |
61 6.2 % 27.5 % |
129 13.2 % 22 % |
418 42.7 % 21.3 % |
371 37.9 % 17.9 % |
979 100 % 20.2 % |
| quinto |
108 11.2 % 48.6 % |
168 17.4 % 28.6 % |
379 39.2 % 19.3 % |
313 32.3 % 15.1 % |
968 100 % 20 % |
| Total |
222 4.6 % 100 % |
587 12.1 % 100 % |
1967 40.6 % 100 % |
2068 42.7 % 100 % |
4844 100 % 100 % |
sjt.xtab(norte$idhm_quintil,
norte$Sc_class,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Norte")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
1 0.8 % 100 % |
8 6.2 % 20 % |
34 26.6 % 25 % |
85 66.4 % 44.5 % |
128 100 % 34.8 % |
| segundo |
0 0 % 0 % |
24 21.2 % 60 % |
37 32.7 % 27.2 % |
52 46 % 27.2 % |
113 100 % 30.7 % |
| terceiro |
0 0 % 0 % |
7 6.5 % 17.5 % |
57 52.8 % 41.9 % |
44 40.7 % 23 % |
108 100 % 29.3 % |
| quarto |
0 0 % 0 % |
1 6.2 % 2.5 % |
5 31.2 % 3.7 % |
10 62.5 % 5.2 % |
16 100 % 4.3 % |
| quinto |
0 0 % 0 % |
0 0 % 0 % |
3 100 % 2.2 % |
0 0 % 0 % |
3 100 % 0.8 % |
| Total |
1 0.3 % 100 % |
40 10.9 % 100 % |
136 37 % 100 % |
191 51.9 % 100 % |
368 100 % 100 % |
sjt.xtab(nordeste$idhm_quintil,
nordeste$Sc_class,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Nordeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
6 0.8 % 46.2 % |
61 7.8 % 41.5 % |
317 40.3 % 49.5 % |
403 51.2 % 52.1 % |
787 100 % 50 % |
| segundo |
6 0.9 % 46.2 % |
69 10.7 % 46.9 % |
271 42 % 42.3 % |
299 46.4 % 38.6 % |
645 100 % 41 % |
| terceiro |
0 0 % 0 % |
16 12 % 10.9 % |
49 36.8 % 7.7 % |
68 51.1 % 8.8 % |
133 100 % 8.4 % |
| quarto |
0 0 % 0 % |
1 12.5 % 0.7 % |
3 37.5 % 0.5 % |
4 50 % 0.5 % |
8 100 % 0.5 % |
| quinto |
1 100 % 7.7 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0.1 % |
| Total |
13 0.8 % 100 % |
147 9.3 % 100 % |
640 40.7 % 100 % |
774 49.2 % 100 % |
1574 100 % 100 % |
sjt.xtab(centro_oeste$idhm_quintil,
centro_oeste$Sc_class,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Centro-Oeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
2 66.7 % 5.7 % |
0 0 % 0 % |
1 33.3 % 0.5 % |
3 100 % 0.7 % |
| segundo |
0 0 % 0 % |
0 0 % 0 % |
13 59.1 % 6.7 % |
9 40.9 % 4.8 % |
22 100 % 5.3 % |
| terceiro |
2 1.4 % 100 % |
11 8 % 31.4 % |
59 42.8 % 30.3 % |
66 47.8 % 35.5 % |
138 100 % 33 % |
| quarto |
0 0 % 0 % |
18 9.3 % 51.4 % |
94 48.5 % 48.2 % |
82 42.3 % 44.1 % |
194 100 % 46.4 % |
| quinto |
0 0 % 0 % |
4 6.6 % 11.4 % |
29 47.5 % 14.9 % |
28 45.9 % 15.1 % |
61 100 % 14.6 % |
| Total |
2 0.5 % 100 % |
35 8.4 % 100 % |
195 46.7 % 100 % |
186 44.5 % 100 % |
418 100 % 100 % |
sjt.xtab(sudeste$idhm_quintil,
sudeste$Sc_class,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Sudeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
1 2.3 % 2.1 % |
4 9.3 % 2.8 % |
11 25.6 % 2.2 % |
27 62.8 % 3.8 % |
43 100 % 3.1 % |
| segundo |
2 1.3 % 4.3 % |
14 9.4 % 9.9 % |
43 28.9 % 8.4 % |
90 60.4 % 12.7 % |
149 100 % 10.6 % |
| terceiro |
11 2.9 % 23.4 % |
40 10.4 % 28.2 % |
147 38.2 % 28.8 % |
187 48.6 % 26.4 % |
385 100 % 27.4 % |
| quarto |
18 4.7 % 38.3 % |
37 9.6 % 26.1 % |
139 36.1 % 27.3 % |
191 49.6 % 27 % |
385 100 % 27.4 % |
| quinto |
15 3.4 % 31.9 % |
47 10.6 % 33.1 % |
170 38.2 % 33.3 % |
213 47.9 % 30.1 % |
445 100 % 31.6 % |
| Total |
47 3.3 % 100 % |
142 10.1 % 100 % |
510 36.2 % 100 % |
708 50.3 % 100 % |
1407 100 % 100 % |
sjt.xtab(sul$idhm_quintil,
sul$Sc_class,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Sul")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
1 50 % 0.2 % |
1 50 % 0.5 % |
2 100 % 0.2 % |
| segundo |
6 19.4 % 3.8 % |
2 6.5 % 0.9 % |
17 54.8 % 3.5 % |
6 19.4 % 2.9 % |
31 100 % 2.9 % |
| terceiro |
18 8.6 % 11.3 % |
32 15.2 % 14.3 % |
114 54.3 % 23.5 % |
46 21.9 % 22 % |
210 100 % 19.5 % |
| quarto |
43 11.4 % 27 % |
72 19.1 % 32.3 % |
177 47.1 % 36.4 % |
84 22.3 % 40.2 % |
376 100 % 34.9 % |
| quinto |
92 20.1 % 57.9 % |
117 25.5 % 52.5 % |
177 38.6 % 36.4 % |
72 15.7 % 34.4 % |
458 100 % 42.5 % |
| Total |
159 14.8 % 100 % |
223 20.7 % 100 % |
486 45.1 % 100 % |
209 19.4 % 100 % |
1077 100 % 100 % |